import java.lang.reflect.Field;

public class PersonTest {
    public static void main(String[] args) {
        /*Person person = new Person("abc", 18);

        System.out.println(person);*/

        // 字符串代表的是类的名称
        String name = "Person";

        try {
            // 返回一个与 参数字符串相关的 class 或者 interface
            Class<?> clazz = Class.forName(name);
            // 创建一个代表 class 对象的实例
            Object instance = clazz.newInstance();
            System.out.println(instance);

            // 获取通过反射形式得到的属性
            Field nameField = clazz.getDeclaredField("name");
            // 设置对象属性的值
            nameField.set(instance, "abc");

            System.out.println(instance);

            Object instanceNameField = nameField.get(instance);
            System.out.println(instanceNameField);


        } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | NoSuchFieldException e) {
            e.printStackTrace();
        }

    }
}
